<!doctype html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link rel="stylesheet" href="/packages/assets/bootstrap/bootstrap.min.css">

    <title>Cloud</title>

    <link rel="stylesheet" href="/packages/assets/css/style.css">
    <script src="/packages/assets/js/code.js"></script>
    
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image" content="https://eclipse.org/packages/images/icon/twitter_icon.png"/>
<meta name="twitter:title" content="Telemetry end-to-end | Cloud"/>
<meta name="twitter:description" content="Installations instructions for the Telemetry end-to-end package."/>


    <link rel="icon" type="image/svg+xml" href="/packages/images/icon/icon.svg" sizes="any">
    <link rel="icon" href="/packages/images/icon/icon.png" sizes="192x192">
    <link rel="apple-touch-icon-precomposed" href="/packages/images/icon/icon_apple.png" sizes="180x180">

</head>

<body>

    <header>
<nav class="navbar navbar-expand-md fixed-top navbar-light bg-light">
  <div class="container">
    <a class="navbar-brand" href="/packages/">
      <img src="/packages/images/icon_brand_navbar.svg" width="30" height="30" alt="Eclipse IoT Packages™">
    </a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarCollapse">
      <ul class="navbar-nav mr-auto"><li class="nav-item">
          <a
              class="nav-link"
              href="/packages/">Home</a>
        </li>
        <li class="nav-item">
          <a
              class="nav-link"
              href="/packages/about/">About</a>
        </li>
        <li class="nav-item">
          <a
              class="nav-link"
              href="/packages/faq/">FAQ</a>
        </li>
        <li class="nav-item">
          <a
              class="nav-link"
              href="/packages/contribute/">Contribute</a>
        </li>
        <li class="nav-item">
          <a
              class="nav-link"
              href="/packages/prereqs/">Prerequisites</a>
        </li>
        <li class="nav-item">
          <a
              class="nav-link"
              href="/packages/repository/">Repository</a>
        </li>
        </ul>
    </div>
  </div>
</nav></header>

    <main id="main" role="main" >
      

<div><div class="container mt-5">
  <div class="row">
  <div class="col-12 col-sm-9 col-xl-8">
  <h1>Telemetry end-to-end</h1>
<p class="lead">A package showing telemetry data acquisition end-to-end: Microcontroller firmware to cloud side data processing, using Drogue IoT and Apache Kafka in the process.</p></div>
  
  <div class="col-12 col-sm-3 col-xl-4 d-flex flex-sm-row-reverse">
      <img alt="Page logo"  src="/packages/packages/telemetry-e2e/images/telemetry-e2e-logo.svg" class="img-fluid m-lg-3 d-block align-self-center " style="max-height: 10rem;"/>
  </div>
  </div>
</div>
</div>

<div class="container">

<nav class="nav nav-pills nav-fill mt-2 mb-5"><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/">Overview</a><a class="nav-item nav-link  active" href="/packages/packages/telemetry-e2e/10-installation-cloud/">Cloud</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/20-installation-gateway/">Gateway</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/30-installation-device/">Device</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/40-using/">Using it</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/50-understand/">Understanding it</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/60-alternatives/">Alternatives</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/70-cheating/">Cheating</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/90-learn/">Learn more</a></nav>
<div class="row">

<div class="col-12 col-md-8 col-lg-9">

    <p>You will need a Kubernetes instance, the <code class="language-plaintext highlighter-rouge">kubectl</code> and the <code class="language-plaintext highlighter-rouge">helm</code> tool in order to deploy this package.
You will also need to add the Helm chart repository <code class="language-plaintext highlighter-rouge">eclipse-iot</code> to your local setup. Please refer to
our <a href="/packages/prereqs">pre-requisites</a> page for details.</p>

    <p>You might also want to <a href="https://github.com/drogue-iot/drg#installation">install the Drogue IoT command line tool</a> named <code class="language-plaintext highlighter-rouge">drg</code>.</p>

    <p>While technically any Kubernetes cluster will do, this tutorial focuses on Minikube to keep things as simple
as possible. When using Kind or any other Kubernetes cluster, some commands might need to be tweaked a bit.</p>

    <h2 id="minikube">Minikube</h2>

    <p>The following command starts up a Minikube cluster suitable for this package:</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>minikube start --cpus 4 --memory 8192 --disk-size 20gb --addons ingress
</code></pre></div>    </div>

    <p>Be sure the run the load balancer tunnel, once the instance is started:</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>minikube tunnel # do not abort this command or close the terminal it is running in
</code></pre></div>    </div>

    <h2 id="check-access">Check access</h2>

    <p>Be sure that you are logged in to your Kubernetes cluster:</p>

    <div class="clipboard"><pre><code>kubectl version</code></pre></div>

    <p>This should print out the version of the client, but must also print out the version of the server.</p>

    <p><details><summary>Example output</summary><div>
          <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:38:50Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:32:41Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
</code></pre></div>          </div>
        </div></details></p>

    <h2 id="install-the-package">Install the package</h2>

    <p>This package consists of multiple components. Some of them are installed in the Kubernetes cluster, while the
IoT gateway and the device firmware are naturally installed in dedicated devices.</p>

    <p>This page describes the installation of the cluster components, which is orchestrated using an overarching Helm
chart.</p>

    <p>Assuming you are using Minikube, or have full cluster access, you can simply install this be running the following
Helm command:</p>

    <div class="clipboard"><pre><code>DOMAIN=.$(minikube ip).nip.io
helm upgrade --install eclipse-iot-telemetry eclipse-iot/telemetry-e2e \
  --timeout 30m \
  --set global.domain=$DOMAIN</code></pre></div>

    <div role="alert" class="alert alert-warning"><h4 class="alert-heading">Ingress validation error </h4>

It may be that the deployment fails due to some "ingress" validation error. This is a know issue in the
NGINX ingress controllers (see <a class="alert-link" href="https://github.com/kubernetes/ingress-nginx/issues/6245" target="_blank">#6245</a>). Unfortunately,
there is currently no proper fix for this.

<hr />

<p>However, a workaround exists. You can delete the validation webhook causing the issue:</p>
<div class="clipboard"><pre><code>kubectl delete validatingwebhookconfigurations ingress-nginx-admission</code></pre></div>

<p class="mb-0">After that, re-run the <code>helm upgrade</code> command above.</p>

</div>

    <h2 id="be-patient">Be patient</h2>

    <p>Depending on your internet speed and overall I/O and CPU performance, this installation may take a bit. Normally it
will finish in around 15 minutes.</p>

    <p>Assuming you have the <code class="language-plaintext highlighter-rouge">watch</code> command, you can watch the progress using the following command:</p>

    <div class="clipboard"><pre><code>watch kubectl get pods</code></pre></div>

    <h2 id="once-it-is-ready">Once it is ready</h2>

    <p>Once the installation is ready, the Helm command will print out some details on the installation.</p>

    <p>This will also give you the URL to the web console and the command as well as the access credentials.</p>

    <h2 id="what-is-next">What is next?</h2>

    <p>Go to the next page and set up the IoT gateway.</p>

  </div>

<div class="col-12 col-md-4 col-lg-3 

">

    <div class="card req-card">
  <div class="card-header text-center"><h5>Requirements</h5></div>
  <ul class="list-group list-group-flush">






<li class="list-group-item">

<dl class="row">
<dt class="col-sm-6">Kubernetes</dt>
<dd class="col-sm-6 text-right">1.19.x</dd>
</dl>

</li>




<li class="list-group-item">

<dl class="row">
<dt class="col-sm-6">CPUs</dt>
<dd class="col-sm-6 text-right">4</dd>
</dl>

</li>




<li class="list-group-item">

<dl class="row">
<dt class="col-sm-6">Memory</dt>
<dd class="col-sm-6 text-right">8192 MiB</dd>
</dl>

</li>




<li class="list-group-item">

<dl class="row">
<dt class="col-sm-6">Disk</dt>
<dd class="col-sm-6 text-right">20 GiB</dd>
</dl>

</li>


  </ul>
  
  <div class="card-body"><p>Will require cluster admin privileges and an active Ingress controller.</p> <p>You will also need a micro:bit&nbsp;v2 and a Raspberry&nbsp;Pi&nbsp;3+ to get the most out of this package.</p></div>
  
</div>

    <p>


<div class="position-sticky" style="top: 4rem;">


<aside>
<div class="card">
<div class="card-body">
<h5 class="card-title">Table of contents</h5>
<div id="toc" class="toc"></div>
</div>
</div>
</aside>

<script>generateToc("#toc", "h2[id], h3[id], h4[id]");</script>


</div>



</p>

  </div>

</div>

</div>

    </main>

    <footer class="page-footer">

    <div class="container">

    <div class="row">

    

        

            <div class="col-6 col-md">
            
            
                <h5>Eclipse IoT Packages</h5>
                <ul class="list-unstyled">
                    
                        <li>
                            <a class="text-muted" href="/packages/">Home</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="/packages/about">About</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="/packages/contribute">Contribute</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://eclipse.org/security">Security</a>
                        </li>
                    
                </ul>
            
            </div>
        

            <div class="col-6 col-md">
            
            
                <h5>Eclipse IoT</h5>
                <ul class="list-unstyled">
                    
                        <li>
                            <a class="text-muted" href="https://iot.eclipse.org">Top Level Project</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/org/workinggroups/iotwg_charter.php">Working group</a>
                        </li>
                    
                </ul>
            
            </div>
        

            <div class="col-6 col-md">
            
            
                <h5>Legal</h5>
                <ul class="list-unstyled">
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/legal/privacy.php">Privacy Policy</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/legal/termsofuse.php">Terms of Use</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/legal/copyright.php">Copyright Agent</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/legal/epl-2.0/">Eclipse Public License</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/legal">Legal Resources</a>
                        </li>
                    
                </ul>
            
            </div>
        

            <div class="col-6 col-md">
            
            
                <h5>Eclipse Foundation</h5>
                <ul class="list-unstyled">
                    
                        <li>
                            <a class="text-muted" href="https://eclipse.org/org">About us</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/org/foundation/contact.php">Contact us</a>
                        </li>
                    
                        <li>
                            <a class="text-muted" href="https://www.eclipse.org/org/foundation/directors.php">Board of Directors</a>
                        </li>
                    
                </ul>
            
            </div>
        

    
    </div>

    
    <div class="row">
        <div class="col-12 col-md text-muted">Copyright © Eclipse Foundation, Inc. All Rights Reserved.</div>
    </div>
    

    </div>

</footer>


    <script src="/packages/assets/popper.min.js"></script>
    <script src="/packages/assets/jquery.min.js"></script>
    <script src="/packages/assets/bootstrap/bootstrap.min.js"></script>

    <script src="/packages/assets/clipboard.min.js"></script>
    <script src="/packages/assets/clipboard.js"></script>

</body>

</html>